package org.practice.service;

import java.io.UnsupportedEncodingException;

import org.practice.service.bo.CartBO;
import org.practice.util.DaoException;

/**
 * 购物车的业务逻辑service
 */
public interface CartService {
	/**
	 * 添加条目
	 * @param cart
	 * @param product
	 * @return boolean
	 */
	public abstract boolean addCartItem(CartBO cart,Integer productId) throws DaoException ;

	/**
	 * 更新数目
	 * @param cart
	 * @param productId
	 * @param num
	 * @return boolean
	 */
	public abstract boolean updateNum(CartBO cart,Integer productId, int num);

	/**
	 * 下架商品
	 * @param cart
	 * @param productId
	 * @return boolean
	 */
	public abstract boolean drop(CartBO cart,Integer productId) ;

	/**
	 * 恢复产品到购物车
	 * @param cart
	 * @param productId
	 * @return boolean
	 */
	public abstract boolean recovery(CartBO cart,Integer productId);

	/**
	 * 统计购物车中有效的条目
	 * @param cart
	 * @return list
	 */
	public void countEffectiveCartItems(CartBO cart);

	/**
	 * 统计购物车中已下架的条目
	 * @param cart
	 * @return list
	 */
	public void countDropCartItems(CartBO cart);
	/**
	 * 计算购物车总价
	 * @return double
	 */
	public void calculateTotalPrice(CartBO cart);

	/**
	 * 获得购物车当当价
	 * @return double
	 */
	public void calculateDangPrice(CartBO cart);
	
	/**
	 * 生成购物车序列号，将序列号保存在cookie中
	 * @throws UnsupportedEncodingException
	 * @return String
	 */
	public String generateSerialize(CartBO cart);

	/**
	 * 重新加载购物车条目
	 * @param cookieVal
	 * @throws DaoException
	 * @throws UnsupportedEncodingException
	 */
	public void load(CartBO cart,String cookieVal);
	
	/**
	 * 清空购物车
	 * @param cart
	 */
	public void clear(CartBO cart);
	/**
	 * 判断购物车是否为空
	 * @param cart
	 * @return boolean
	 */
	public boolean isEmpty(CartBO cart);
}
